

Generate orbital diagram and build gif picture¶
Introduzione dell'Intelligenza artificiale¶

Costuiamo due sistemi di classificazione con supervisione basato su algoritmi di A.I.
Si vule classificare i NEA per:
- pericolosità (PHA, non PHA)
- per tipo (ATE, APO, AMO ed IEO)
Algoritmi con supervisione: una classe di algoritmi per la classificazione che si basa su un modello di addestramento con dati etichettati per fare previsione su nuovi dati.
Questo genere di algoritmi serve per risolvere problemi di classificazione e regressione.
Il Machine Learning, un sotto campo dell’Intelligenza Artificiale, sostiene il lavoro dell’essere umano, soprattutto nei casi di compiti ripetitivi che possono essere automatizzati ma non lo solleva dal controllo dei risultati forniti dagli algoritmi e dalla validità e consistenza dei dati di ingresso (bias, numerosità, rappresentatività del campione, …)
Fonte: https://blog.hubspot.com/marketing/ai-algorithms

Filtriamo sui dati orbitali che ipotizziamo necessari alla classificazione e sostituiamo la classe con una numerazione, per ognuna delle 2 analisi.

Disegno dell'autore
Classificazione dei NEA in funzione della pericolosità¶
| H | a | q | Q | moid | class | pha | |
|---|---|---|---|---|---|---|---|
| 0 | 10.42 | 1.46 | 1.13 | 1.78 | 0.15 | 1 | 0.00 |
| 1 | 15.59 | 2.64 | 1.19 | 4.08 | 0.20 | 1 | 0.00 |
| 2 | 13.88 | 2.47 | 1.06 | 3.88 | 0.08 | 1 | 0.00 |
| 3 | 9.26 | 2.67 | 1.25 | 4.09 | 0.34 | 1 | 0.00 |
| 4 | 17.38 | 1.92 | 1.08 | 2.76 | 0.10 | 1 | 0.00 |
Suddivisione del dataset dei NEA in dati di addestramento e test¶
Suddivisione dei dati iniziali in training (35%) e test (65%) usati per la validazione
Dati di input:
- moid
- H
Dati di output:
- pha
Riscalare:
- Uniformare i dati in un'unica scala commensurabile uguale ad ogni caratteristica
0.00 20355 1.00 1553 Name: pha, dtype: int64
Support Vector Machines (SVM) model¶
Il classificatore separa i punti usando un iperpiano con il massimo margine di separazione
SVM trova l'iperpiano ottimale (massimo) che separa il dataset in due zone entro i quali i nuovi dati verranno classificati. Lavora in maniera iterativa per minimizzare l'errore.
E' un approccio statistico. (https://www.datacamp.com/tutorial/svm-classification-scikit-learn-python)
SVM Accuracy: 0.9692320732327513
precision recall f1-score support
0.0 0.98 0.99 0.98 10961
1.0 0.83 0.71 0.77 837
accuracy 0.97 11798
macro avg 0.90 0.85 0.88 11798
weighted avg 0.97 0.97 0.97 11798
- Accuracy: quanto le predizioni sono vere?
- Precision: fra tutte quelle positive/negative, quante sono vere?
- Recall: Tra tutte quelle che dovrebbero essere previste come vere, quante lo sono veramente? (errore primo tipo)
- F1 Score: misura statistica che combina Recall e Precision
KNeighbors model¶
Il classificatore usa il concetto di prossimità per fare previsioni sul raggruppamento a cui appartiene il dato in esame/ Si basa sull'ipotesi che punti simili possono trovarsi vicini tra loro.
L'assegnazione avviene per maggioranza oppure per superamento di una soglia percentuale.
Serve introdurre il concetto di distanza. Bisogna definire una metrica.
- Distanza di Hamming
- Distanza di Manhattan
- Distanza Euclidea
KNeighbors Accuracy: 0.9977962366502797
precision recall f1-score support
0.0 1.00 1.00 1.00 10961
1.0 0.99 0.98 0.98 837
accuracy 1.00 11798
macro avg 0.99 0.99 0.99 11798
weighted avg 1.00 1.00 1.00 11798
Decision tree model¶
E' un classificatore ad albero decisionale dove:
- ogni nodo rappresenta un attributo
- ogni diramazione una regola di decisione
- ogni foglia un risultato (previsione)
Si parte dalla radice e si partiziona il dataset in funzione del valore di un attributo. Si procede in maniera iterativa. Il processo è simile al procedimento decisionale dell'essere unamo.
Le principali misure utilizzate per le definizioni di attributo ed assegnamento dei nodi sono:
- Information Gain (basata sul valore di entropia)
- Gain Ratio (indice preferenza)
- Gini Index (basata su un calcolo probabilistico)
DecisionTree Accuracy: 0.9977962366502797
precision recall f1-score support
0.0 1.00 1.00 1.00 10961
1.0 0.98 0.99 0.98 837
accuracy 1.00 11798
macro avg 0.99 0.99 0.99 11798
weighted avg 1.00 1.00 1.00 11798
Accuratezza del modello¶
Tutti gli algoritmi di classificazione con supervisione offrono un valore di accuratezza elevata.
| Model | Accuracy | |
|---|---|---|
| 0 | SVM | 0.9692321 |
| 1 | KNeighbors | 0.9977962 |
| 2 | Decision Tree | 0.9977962 |
Classificazione dei NEA per tipo¶
Suddivisione del dataset dei NEA in dati di addestramento e test¶
Suddivisione dei dati iniziali in training (40%) e test (60%) usati per la validazione
Dati di input:
- a
- q
- Q
Dati di output:
- APO, AMO, ATE, IEO (0, 1, 2, 3)
Riscalare:
- Uniformare i dati in un'unica scala commensurabile uguale ad ogni caratteristica
Codifica i tipi di classi con numeri
0 11377 1 7233 2 1594 3 19 Name: class2, dtype: int64
DecisionTree Accuracy: 0.6505970481346881
precision recall f1-score support
0 0.99 0.63 0.77 7585
1 1.00 0.82 0.90 4823
2 0.00 0.00 0.00 1062
3 0.00 1.00 0.01 13
accuracy 0.65 13483
macro avg 0.50 0.61 0.42 13483
weighted avg 0.91 0.65 0.76 13483
KNeighbors Accuracy: 0.7835793221093228
precision recall f1-score support
0 0.96 0.67 0.79 7585
1 0.99 0.95 0.97 4823
2 0.27 0.84 0.41 1062
3 0.03 0.38 0.05 13
accuracy 0.78 13483
macro avg 0.56 0.71 0.55 13483
weighted avg 0.91 0.78 0.82 13483
Random Forest model¶
Random Forest è un algoritmo che combina l'output di più strutture ad albero decisionali per raggiungere un unico risultato. Gestisce sia i problemi di classificazione che quelli di regressione.
Gli algoritmi Random Forest hanno tre iperparametri principali, che devono essere impostati prima dell'addestramento.
- dimensione dei nodi
- numero di strutture ad albero
- numero di caratteristiche campionate
Si costruisce una serie di strutture ad albero decisionali e ogni struttura ad albero è un insieme composto da un campione di dati tratto da un set di addestramento con sostituzione La classificazione avviene a maggioranza: la variabile categoriale più frequente
Fonte: http://www.ibm.com

Fitting 4 folds for each of 125 candidates, totalling 500 fits
Random Forest Accuracy: 0.7088185122005488
precision recall f1-score support
0 0.99 0.63 0.77 7585
1 1.00 0.98 0.99 4823
2 0.00 0.00 0.00 1062
3 0.00 1.00 0.01 13
accuracy 0.71 13483
macro avg 0.50 0.65 0.44 13483
weighted avg 0.91 0.71 0.79 13483
| Model | Accuracy | |
|---|---|---|
| 0 | Decision Tree | 0.6505970 |
| 1 | KNeighbor | 0.7835793 |
| 2 | Random Forest | 0.7088185 |
Vari passaggi NEA negli anni passati e prossimi futuri¶
Lista avvicinamenti NEO a minima distanza per gli anni dal 2018 fino al 2030 con diametro noto
- per anno
- per mese
Per anni inferiori al 2023 agli avvicinamenti sono già avvenuti, per anni futuri si tratta di proiezioni in base alle orbite attuali
Lista dei NEA con il passaggio alla minima distanza per gli ultimi anni
| Year | des | fullname | cd | dist | Velocity (Km/s) | Diameter (Km) | |
|---|---|---|---|---|---|---|---|
| 0 | 2019 | 2019 UN13 | (2019 UN13) | 2019-Oct-31 14:45 | 0.0328133 | 12.8450934 | NaN |
| 1 | 2020 | 2020 VT4 | (2020 VT4) | 2020-Nov-13 17:21 | 0.0175482 | 13.4271195 | NaN |
| 2 | 2021 | 2021 UA1 | (2021 UA1) | 2021-Oct-25 03:07 | 0.0245231 | 15.8350069 | NaN |
| 3 | 2022 | 2022 FD1 | (2022 FD1) | 2022-Mar-25 09:13 | 0.0386174 | 18.5120509 | NaN |
| 4 | 2023 | 2023 BU | (2023 BU) | 2023-Jan-27 00:29 | 0.0259287 | 9.2672387 | NaN |
| 5 | 2024 | 2007 XB23 | (2007 XB23) | 2024-Dec-11 18:08 | 1.1592817 | 4.7659415 | NaN |
| 6 | 2025 | 2022 SS2 | (2022 SS2) | 2025-Sep-13 14:53 | 2.3740716 | 7.2177511 | NaN |
| 7 | 2026 | 2013 GM3 | (2013 GM3) | 2026-Apr-14 16:15 | 0.6777525 | 7.4095083 | NaN |
| 8 | 2027 | 137108 | 137108 (1999 AN10) | 2027-Aug-07 07:11 | 1.0141914 | 26.2840540 | NaN |
| 9 | 2028 | 153814 | 153814 (2001 WN5) | 2028-Jun-26 05:23 | 0.6470144 | 10.2426018 | 0.9320000 |
| 10 | 2029 | 99942 | 99942 Apophis (2004 MN4) | 2029-Apr-13 21:46 | 0.0988853 | 7.4225373 | 0.3400000 |
Orbita di avvicinamento di Apophis nel 2029 visto dall'alto del Sistema Solare
Ephemerides at 50 epochs from 2029-03-15 12:00:00.000 (TDB) to 2029-04-14 12:00:00.000 (TDB)
Lista dei passaggi NEA nei primi giorni del 2024¶
Found 24 NEA passages from date: 2024-01-08 to date: 2024-01-15
| des | cd | dist | Velocity (Km/s) | Absolute Magnitude | fullname | Earth-Moon distance | |
|---|---|---|---|---|---|---|---|
| 0 | 2024 AC3 | 2024-Jan-08 01:13 | 0.01045 | 21.50614 | 25.20600 | (2024 AC3) | 4.06580 |
| 1 | 2024 AX3 | 2024-Jan-08 04:48 | 0.01233 | 5.51022 | 27.62600 | (2024 AX3) | 4.79872 |
| 2 | 2024 AD2 | 2024-Jan-08 10:58 | 0.03229 | 7.26966 | 26.38100 | (2024 AD2) | 12.56812 |
| 3 | 2002 AY1 | 2024-Jan-08 18:11 | 0.03879 | 17.33917 | 20.94000 | (2002 AY1) | 15.09628 |
| 4 | 2023 XN13 | 2024-Jan-09 06:22 | 0.04032 | 1.43756 | 28.08100 | (2023 XN13) | 15.69195 |
| 5 | 2024 AS1 | 2024-Jan-09 18:12 | 0.00388 | 16.78510 | 27.21900 | (2024 AS1) | 1.50846 |
| 6 | 2024 AC4 | 2024-Jan-10 00:52 | 0.01610 | 8.94911 | 27.26500 | (2024 AC4) | 6.26590 |
| 7 | 2024 AF4 | 2024-Jan-10 04:42 | 0.04772 | 6.34531 | 26.16600 | (2024 AF4) | 18.56974 |
| 8 | 2023 XT14 | 2024-Jan-10 12:02 | 0.03113 | 6.37317 | 25.58700 | (2023 XT14) | 12.11389 |
| 9 | 2024 AU1 | 2024-Jan-10 14:07 | 0.04693 | 18.14647 | 24.17200 | (2024 AU1) | 18.26233 |
| 10 | 2024 AN1 | 2024-Jan-10 17:08 | 0.01036 | 7.94653 | 26.56900 | (2024 AN1) | 4.03219 |
| 11 | 2023 YO1 | 2024-Jan-10 17:53 | 0.01742 | 3.07301 | 25.90900 | (2023 YO1) | 6.78132 |
| 12 | 2024 AY2 | 2024-Jan-10 22:52 | 0.02139 | 8.39128 | 26.95800 | (2024 AY2) | 8.32423 |
| 13 | 2024 AE4 | 2024-Jan-11 00:18 | 0.00814 | 8.22568 | 28.68800 | (2024 AE4) | 3.16635 |
| 14 | 2020 AC1 | 2024-Jan-11 11:29 | 0.04939 | 5.31646 | 28.40000 | (2020 AC1) | 19.22104 |
| 15 | 2024 AB4 | 2024-Jan-11 14:21 | 0.03822 | 2.96030 | 26.26100 | (2024 AB4) | 14.87324 |
| 16 | 2024 AG4 | 2024-Jan-11 21:32 | 0.00228 | 11.96736 | 28.24300 | (2024 AG4) | 0.88571 |
| 17 | 2023 WZ3 | 2024-Jan-11 23:30 | 0.04139 | 3.98656 | 25.03000 | (2023 WZ3) | 16.10794 |
| 18 | 2024 AR2 | 2024-Jan-12 03:45 | 0.00847 | 19.19486 | 26.39300 | (2024 AR2) | 3.29654 |
| 19 | 2024 AW2 | 2024-Jan-13 12:10 | 0.02796 | 6.73245 | 26.47400 | (2024 AW2) | 10.88177 |
| 20 | 2024 AR1 | 2024-Jan-13 14:29 | 0.02564 | 4.53009 | 26.04900 | (2024 AR1) | 9.97751 |
| 21 | 2024 AF3 | 2024-Jan-14 16:21 | 0.02247 | 6.73303 | 26.92300 | (2024 AF3) | 8.74507 |
| 22 | 2024 AG3 | 2024-Jan-14 18:18 | 0.01136 | 9.79961 | 27.74500 | (2024 AG3) | 4.42011 |
| 23 | 2024 AZ3 | 2024-Jan-14 20:53 | 0.00169 | 9.92721 | 28.85400 | (2024 AZ3) | 0.65667 |
Passaggi NEA pericolosi per questo anno¶
| des | cd | dist | Velocity (Km/s) | Absolute Magnitude | Diameter (Km) | fullname | Earth-Moon distance | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2008 OS7 | 2024-Feb-02 14:41 | 0.01908 | 18.16685 | 20.48000 | None | (2008 OS7) | 7.42484 |
| 1 | 2019 CC5 | 2024-Feb-04 07:10 | 0.04904 | 14.95966 | 22.03000 | None | (2019 CC5) | 19.08509 |
| 2 | 2023 SP1 | 2024-Feb-07 00:06 | 0.03665 | 11.79996 | 20.71000 | None | (2023 SP1) | 14.26434 |
| 3 | 2020 BP13 | 2024-Apr-09 02:32 | 0.03886 | 6.80395 | 21.20000 | None | (2020 BP13) | 15.12381 |
| 4 | 517681 | 2024-Apr-15 14:08 | 0.04699 | 14.18096 | 18.91000 | None | 517681 (2015 DE198) | 18.28646 |
| 5 | 439437 | 2024-Apr-15 14:50 | 0.02177 | 16.48970 | 18.83000 | None | 439437 (2013 NK4) | 8.47213 |
| 6 | 2022 TN1 | 2024-Apr-30 23:57 | 0.04766 | 17.73737 | 20.43000 | None | (2022 TN1) | 18.54963 |
| 7 | 415029 | 2024-Jun-27 20:16 | 0.04439 | 25.88222 | 15.98000 | None | 415029 (2011 UL21) | 17.27675 |
| 8 | 2011 AM24 | 2024-Jul-26 15:56 | 0.04311 | 6.20365 | 20.51000 | 0.511 | (2011 AM24) | 16.77739 |
| 9 | 523664 | 2024-Jul-28 02:47 | 0.03822 | 23.68534 | 18.59000 | 0.346 | 523664 (2012 OD1) | 14.87333 |
| 10 | 2013 FW13 | 2024-Sep-18 06:29 | 0.02172 | 15.55928 | 21.70000 | None | (2013 FW13) | 8.45346 |
| 11 | 363027 | 2024-Oct-12 01:52 | 0.02380 | 16.62992 | 19.64000 | 0.578 | 363027 (1998 ST27) | 9.26404 |
| 12 | 363305 | 2024-Oct-24 15:48 | 0.03021 | 4.87269 | 21.41000 | None | 363305 (2002 NV16) | 11.75649 |
| 13 | 2020 WG | 2024-Oct-28 01:57 | 0.02161 | 9.41521 | 21.73000 | None | (2020 WG) | 8.41008 |
| 14 | 2023 WK3 | 2024-Nov-18 14:02 | 0.04100 | 14.47382 | 20.54000 | None | (2023 WK3) | 15.95532 |
| 15 | 447755 | 2024-Dec-03 23:16 | 0.03698 | 12.22260 | 19.77000 | None | 447755 (2007 JX2) | 14.39161 |
| 16 | 2020 XR | 2024-Dec-04 05:27 | 0.01477 | 12.30958 | 19.90000 | None | (2020 XR) | 5.74745 |
| 17 | 2020 BC6 | 2025-Jan-05 21:44 | 0.02462 | 22.18301 | 20.78000 | None | (2020 BC6) | 9.58214 |
| des | cd | dist | Velocity (Km/s) | Absolute Magnitude | Diameter (Km) | fullname | Earth-Moon distance | |
|---|---|---|---|---|---|---|---|---|
| 16 | 2020 XR | 2024-Dec-04 05:27 | 0.01477 | 12.30958 | 19.90000 | None | (2020 XR) | 5.74745 |
Supponete che un asteroide on un diametro compreso fra 10 e 20 Km è destinato ad entrare in atmosfera e ad impattare sulla Terra. Avete a disposizione solo una settimana prima dell’incontro. Cosa fareste nel tempo rimasto?

Bibliografia¶
- https://cneos.jpl.nasa.gov/ca/
- https://ssd-api.jpl.nasa.gov/doc/cad.html
- https://github.com/afshimono/near_earth_object?tab=readme-ov-file
- https://asteroid.lowell.edu/
- http://www.ibm.com
Database, tool, sky chart from ESA¶
- https://neo.ssa.esa.int/neo-toolkit
- https://neotools.ssa.esa.int/fvt
- https://neo.ssa.esa.int/neo-population-generator
- https://theskylive.com/near-earth-objects
- https://neotools.ssa.esa.int/scd/setup







